///| 基础类型定义和错误处理
/// 人脸关键点检测系统的基础类型定义

/// 表示一个2D点的坐标
pub struct Point {
  pub x : Int
  pub y : Int
}

/// 表示一个矩形区域
pub struct Rectangle {
  pub x : Int
  pub y : Int
  pub width : Int
  pub height : Int
}

/// 系统错误类型
pub enum FaceDetectionError {
  CameraError(String)
  ModelError(String)
  ProcessingError(String)
  IOError(String)
}

/// 结果类型别名
pub typealias Result[T] = Result[T, FaceDetectionError]

///| 工具函数
/// 创建新的点
pub fn Point::new(x : Int, y : Int) -> Point {
  { x, y }
}

/// 创建新的矩形
pub fn Rectangle::new(x : Int, y : Int, width : Int, height : Int) -> Rectangle {
  { x, y, width, height }
}

/// 将错误转换为字符串
pub fn FaceDetectionError::to_string(self : FaceDetectionError) -> String {
  match self {
    CameraError(msg) => "Camera Error: " + msg
    ModelError(msg) => "Model Error: " + msg
    ProcessingError(msg) => "Processing Error: " + msg
    IOError(msg) => "IO Error: " + msg
  }
}